package com.class_;

import java.lang.reflect.InvocationTargetException;

/*
 * 获取Class对象的几种方式
 * */
public class Demo2 {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        // 方式1
        Class cls1 = Class.forName("com.class_.Car");
        System.out.println(cls1);

        // 方式2
        System.out.println(Car.class);

        // 方式3
        Car car = new Car();
        Class cls3 = car.getClass();
        System.out.println(cls3);

        // 方式4：通过类加载器获取类的Class对象
        // 1、先得到类加载器
        ClassLoader classLoader = car.getClass().getClassLoader();
        // 2、通过类加载器得到Class类对象
        Class cls4 = classLoader.loadClass("com.class_.Car");
        System.out.println(cls4);

        // 基本数据（int\char\boolean\float\double\byte\short\long）按如下方式得到Class对象
        Class<Integer> cls5 = int.class;
        System.out.println(cls5);

        // 包装类获取Class对象
        Class<Integer> cls6 = Integer.TYPE;
        System.out.println(cls6);
    }
}
